using System;
using System.Collections.Generic;


namespace InterpreteScheme
{
    class Parser
    {
        public static Expresion parsear (List<string> tokens)
        {
            if (0 == tokens.Count)
                throw new Exception("EOF inesperado!");

            string token = tokens[0];
            tokens.Remove(token);

            if (token == "(")
            {
                ExpresionCompuesta L = new ExpresionCompuesta ("L");

                while (tokens[0] != ")")
                    L.add (parsear(tokens));

                tokens.Remove(tokens[0]);

                return L;
            }
            else if (token == ")")
            {
                throw new Exception("parse error baby");
            }
            else
            {
                // es un atom
                //
                return new ExpresionAtom (token);
            }
        }
    }
}
